<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Programme informatique</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Programme_informatique"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Programme_informatique rootpage-Programme_informatique skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Programme informatique</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">
<div class="infobox_v3 infobox infobox--frwiki noarchive large"><div class="entete" style="background-color:#E8E8E8"><div>Programme informatique</div></div><div><div class="images" style="padding:2px 0"></div></div><table><tbody><tr class=""><th scope="row">Type</th><td class=""><div>
<span class="wd_p279">Programme <small>(<a href="https://en.wikipedia.org/wiki/Program_(machine)" class="extiw external" title="en:Program (machine)"><span class="indicateur-langue" title="Article sur Wikipédia en anglais">en</span></a>)</small>, <a href="Routine_(informatique)" title="Routine (informatique)">routine</a></span></div></td></tr></tbody></table><table><caption style="text-align:center;background-color:#E8E8E8">Utilisation</caption><tbody><tr class=""><th scope="row">Utilise</th><td class=""><div>
<span class="wd_p2283"><a href="Langage_machine" title="Langage machine">Langage machine</a></span></div></td></tr></tbody></table></div>
<p>Un <b>programme <a href="Informatique" title="Informatique">informatique</a></b> est un ensemble d'instructions et d’opérations destinées à être exécutées par un <a href="Ordinateur" title="Ordinateur">ordinateur</a>.
</p>
<ul><li>Un <b>programme source</b> est un <a href="Code_source" title="Code source">code</a> écrit par un <a href="Informaticien" title="Informaticien">informaticien</a> dans un <a href="Langage_de_programmation" title="Langage de programmation">langage de programmation</a>. Il peut être <a href="Compilation_(informatique)" class="mw-redirect" title="Compilation (informatique)">compilé</a> vers une forme <a href="Code_binaire" title="Code binaire">binaire</a> ou directement <a href="Interpr%C3%A9tation_(informatique)" class="mw-redirect" title="Interprétation (informatique)">interprété</a>.</li>
<li>Un <b>programme binaire</b> décrit les <a href="Instruction_(informatique)" class="mw-redirect" title="Instruction (informatique)">instructions</a> à exécuter par un <a href="Microprocesseur" title="Microprocesseur">microprocesseur</a> sous forme <a href="Num%C3%A9rique" title="Numérique">numérique</a>. Ces instructions appartiennent à un <a href="Langage_machine" title="Langage machine">langage machine</a><sup id="cite_ref-woo_1-0" class="reference"><a href="#cite_note-woo-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-forensics_2-0" class="reference"><a href="#cite_note-forensics-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.</li></ul>
<p>Un programme fait généralement partie d'un <a href="Logiciel" title="Logiciel">logiciel</a> que l'on peut définir comme un ensemble de composants numériques destiné à fournir un service informatique<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>. Un logiciel peut comporter plusieurs programmes. On en retrouve ainsi dans les <a href="Appareil_informatique" title="Appareil informatique">appareils informatiques</a> (<a href="Ordinateur" title="Ordinateur">ordinateur</a>, <a href="Console_de_jeux_vid%C3%A9o" title="Console de jeux vidéo">console de jeux</a>, <a href="Guichet_automatique_bancaire" title="Guichet automatique bancaire">guichet automatique bancaire</a>…), dans des pièces de <a href="Mat%C3%A9riel_informatique" title="Matériel informatique">matériel informatique</a>, ainsi que dans de nombreux dispositifs électroniques (<a href="Imprimante" title="Imprimante">imprimante</a>, <a href="Modem" title="Modem">modem</a>, <a href="Global_Positioning_System" title="Global Positioning System">GPS</a>, <a href="T%C3%A9l%C3%A9phone_mobile" title="Téléphone mobile">téléphone mobile</a>, <a href="Machine_%C3%A0_laver" class="mw-redirect" title="Machine à laver">machine à laver</a>, <a href="Appareil_photo_num%C3%A9rique" class="mw-redirect" title="Appareil photo numérique">appareil photo numérique</a>, <a href="D%C3%A9codeur_TV" title="Décodeur TV">décodeur TV</a> numérique, <a href="Injection_%C3%A9lectronique" class="mw-redirect" title="Injection électronique">injection électronique</a>, <a href="Pilote_automatique" title="Pilote automatique">pilote automatique</a>…).
</p><p>Les programmes informatiques sont concernés par le <a href="Droit_d'auteur" title="Droit d'auteur">droit d'auteur</a> et font l'objet d'une <a href="L%C3%A9gislation" title="Législation">législation</a> proche des œuvres artistiques.
</p>
<div class="mw-heading mw-heading2"><h2 id="Histoire">Histoire</h2></div>
<p>Historiquement, la formalisation et la mise en système des lois par les juristes modernes, annoncent le programme informatique. Par exemple, <a href="Gottfried_Wilhelm_Leibniz" title="Gottfried Wilhelm Leibniz">G. F. Leibniz</a> pose dans son <i>De Conditionibus</i> une "mise en forme logique du contenu juridique [des outils] de pensées inscrits dans une démarche d'exposition cumulative ou chaque proposition d'un degré déterminé doit utiliser seulement les concepts des propositions qui la précèdent<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>."
</p><p>En 1842, la comtesse <a href="Ada_Lovelace" title="Ada Lovelace">Ada Lovelace</a> crée des <a href="Diagramme" title="Diagramme">diagrammes</a> pour la <a href="Machine_analytique" title="Machine analytique">machine analytique</a> de <a href="Charles_Babbage" title="Charles Babbage">Charles Babbage</a>. Ces diagrammes sont considérés aujourd'hui comme étant les premiers programmes informatiques au monde<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>. Toutefois, cette théorie fait l'objet de controverses car Babbage a également écrit lui-même ses premiers programmes pour sa <a href="Machine_analytique" title="Machine analytique">machine analytique</a>, bien que la majorité n'ait jamais été publiée<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>. Par exemple, Bromley note des exemples de programmes préparés par Babbage entre 1837 et 1840 : toutes ses notes sont antérieures à ceux écrits par Lovelace<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>. Cependant, le concept de <a href="Programmation" class="mw-redirect" title="Programmation">programmation</a> et de programme enregistré est d'abord formulé de manière théorique en 1936 par <a href="Alan_Turing" title="Alan Turing">Alan Turing</a><sup id="cite_ref-on_computable_numbers_8-0" class="reference"><a href="#cite_note-on_computable_numbers-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>.
</p><p>Dans les années 1940, les premiers ordinateurs, comme le <a href="Zuse_3" title="Zuse 3">Z3</a> ou le <a href="Harvard_Mark_I" title="Harvard Mark I">Mark I</a>, sont créés. Les programmes informatiques étaient alors conçus par des analystes, rédigés par des programmeurs et saisis par des opératrices sur des bandes type <a href="T%C3%A9lex" title="Télex">télex</a> ou des <a href="Carte_perfor%C3%A9e" title="Carte perforée">cartes en carton perforé</a>. Exécuter un programme consistait à entrer la bande ou la pile de cartes correspondante dans un lecteur électro-mécanique.
</p><p>Le premier <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a> a été développé en 1954. La même année sont apparus les premiers <a href="Assembleur" title="Assembleur">assembleurs</a> et le premier <a href="Compilateur" title="Compilateur">compilateur</a> pour le langage <a href="Fortran" title="Fortran">Fortran</a>.
</p><p>L'enseignement de la programmation était d'abord organisé chez les constructeurs d'ordinateurs et dans les premières universités où ces machines sont installées – dès le début des années 1950 en <a href="Angleterre" title="Angleterre">Angleterre</a> et aux <a href="%C3%89tats-Unis" title="États-Unis">États-Unis</a>, puis au milieu de la même décennie en Europe continentale et au Japon. Ce sont des cours techniques, mais la complexification croissante du sujet (compilateurs, systèmes) entraînera progressivement la constitution d'une science nouvelle<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>.
</p><p>L'avènement de la <a href="Programmation_structur%C3%A9e" title="Programmation structurée">programmation structurée</a> vers 1970 a grandement simplifié le travail des <a href="Programmeur" class="mw-redirect" title="Programmeur">programmeurs</a> et permis la création de programmes traitant des tâches plus nombreuses et plus complexes. Il en va de même avec l'avènement de la <a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">programmation orientée objet</a> entre 1980 et 1990. Conformément à la phrase d'<a href="Edsger_Dijkstra" title="Edsger Dijkstra">Edsger Dijkstra</a> : « Les progrès ne seront possibles que si nous pouvons réfléchir sur les programmes sans les imaginer comme des morceaux de code exécutable ». De nouveaux langages de programmation ou de <a href="M%C3%A9taprogrammation" title="Métaprogrammation">métaprogrammation</a> sont régulièrement créés dans le but de simplifier et d’accélérer les possibilités offertes par programmation.
</p><p>Enfin, la <a href="Miniaturisation" title="Miniaturisation">miniaturisation</a> des ordinateurs et la généralisation des <a href="Interface_graphique" title="Interface graphique">interfaces graphiques</a> ont largement contribué à la démocratisation de l'utilisation de l'ordinateur, au point que dans les années 2010, la généralisation des <a href="Smartphone" title="Smartphone">smartphones</a> permet aux utilisateurs d’exécuter des programmes informatiques en permanence.
</p>
<div class="mw-heading mw-heading2"><h2 id="Programmation">Programmation</h2></div>
<p>La <a href="Programmation_informatique" title="Programmation informatique">programmation</a> consiste, partant d'une idée, à effectuer un travail de réflexion qui aboutit à la rédaction d'<a href="Algorithme" title="Algorithme">algorithmes</a> dans un langage de programmation<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>. Les langages de programmation ont été créés dans l'optique de faciliter le travail du programmeur en raccourcissant le chemin qui va de l'idée au <a href="Code_source" title="Code source">code source</a><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>.
</p><p>Les programmes sont créés par des programmeurs ou des <a href="Ing%C3%A9nieur_logiciel" title="Ingénieur logiciel">ingénieurs logiciels</a>. Les programmeurs travaillent principalement sur l'écriture de programmes tandis que les ingénieurs logiciels travaillent à toutes les étapes de la création du programme. Ils appliquent une démarche formelle et rigoureuse basée sur le génie industriel et les techniques de management<sup id="cite_ref-ParsonsOja2008_12-0" class="reference"><a href="#cite_note-ParsonsOja2008-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>.
</p><p>Avant de commencer à écrire un programme destiné à résoudre un problème, le programmeur doit déterminer les caractéristiques du problème à résoudre. Ceci se fait en plusieurs étapes indépendantes du langage de programmation utilisé. La technique courante est celle d'un <a href="Cycle_de_d%C3%A9veloppement_(logiciel)" title="Cycle de développement (logiciel)">cycle de développement</a>, qui comporte des étapes de définition, de conception, d'écriture, de test, d'installation et de maintenance<sup id="cite_ref-intro_it_13-0" class="reference"><a href="#cite_note-intro_it-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p>
<ul><li>Le problème est tout d'abord examiné en détail en vue de connaître l'étendue du programme à créer. L'étape suivante consiste à choisir des solutions et des algorithmes, puis décrire leur logique sous forme de diagrammes, en vue de clarifier le fonctionnement du programme et faciliter son écriture.</li>
<li>Une fois le programme écrit, celui-ci subit une suite de tests. Les résultats produits par le programme sont comparés avec des résultats obtenus manuellement. De nombreux tests sont nécessaires et les mêmes tests sont exécutés plusieurs fois. Le programme est ensuite installé dans la machine de l'utilisateur final qui fera ses premières observations, puis sera modifié en fonction des commentaires faits par l'utilisateur et des inconvénients signalés.</li>
<li>Les besoins des utilisateurs et des systèmes informatiques varient continuellement, et le programme est régulièrement reconstruit et modifié en vue d'être adapté aux besoins. De nouvelles fonctions y sont ajoutées et des erreurs qui n'avaient pas été décelées auparavant sont corrigées.</li></ul>
<p>Le but du cycle de développement est de réduire les coûts de fabrication tout en augmentant la qualité du programme. Les qualités recherchées sont l'efficacité, la flexibilité, la fiabilité, la portabilité et la robustesse. Il doit également être convivial et facile à modifier<sup id="cite_ref-dixit_14-0" class="reference"><a href="#cite_note-dixit-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>.
</p><p>Il est attendu d'un programme qu'il demande peu d'effort de programmation, que les instructions demandent peu de temps et nécessitent peu de mémoire, qu'il peut être utilisé pour de nombreux usages et donne les résultats attendus quels que soient les changements — permanents ou temporaires — du système informatique.
</p><p>Il est également attendu qu'il peut être facilement transféré sur un modèle d'ordinateur différent de celui pour lequel il est construit, qu'il produit des résultats probants y compris lorsque les informations entrées sont incorrectes, qu'il peut être facilement compris par un <a href="Usager" title="Usager">usager</a> novice et que le code source peut être facilement modifié par la suite.
</p>
<div class="mw-heading mw-heading3"><h3 id="Langages_de_programmation">Langages de programmation</h3></div>
<p>Un <a href="Langage_de_programmation" title="Langage de programmation">langage de programmation</a> est une notation utilisée pour exprimer des <a href="Algorithme" title="Algorithme">algorithmes</a> et écrire des programmes. Un algorithme est un procédé pour obtenir un résultat par une succession de calculs, décrits sous forme de pictogrammes et de termes simples dans une langue naturelle<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>. Jusqu'en 1950, les programmeurs exprimaient les programmes dans des <a href="Langage_machine" title="Langage machine">langages machines</a> ou <a href="Assembleur" title="Assembleur">assembleur</a>, des langages peu lisibles pour des êtres humains et où chaque instruction fait peu de choses, ce qui rendait le travail pénible et le résultat sujet à de nombreuses erreurs. Dès 1950, les programmes ont été décrits dans des langages différents dédiés à l'humain et plus à la machine — des langages de programmation –, ce qui rendait les opérations plus simples à exprimer. Le programme était ensuite traduit automatiquement sous une forme qui permet d'être exécuté par l'ordinateur<sup id="cite_ref-forensics_2-1" class="reference"><a href="#cite_note-forensics-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>.
</p><p>Sur demande, l'ordinateur exécutera les instructions du programme. Bien qu'il exécute toujours exactement ce qui est instruit et ne se trompe jamais, il peut arriver que les instructions qu'il exécute soient erronées à la suite d'une erreur humaine lors de l'écriture du programme. Les langages de programmation visent à diminuer le nombre de ces <a href="Bug_(informatique)" title="Bug (informatique)">bugs</a> ; ceux-ci sont cependant inévitables dans des programmes de plusieurs milliers de lignes<sup id="cite_ref-principles_16-0" class="reference"><a href="#cite_note-principles-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>. Un programme de <a href="Traitement_de_texte" title="Traitement de texte">traitement de texte</a> peut être fait de plus de 750 000 lignes de code et un <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a> peut être fait de plus de 50 millions de lignes. En moyenne un programmeur prépare, écrit, teste et documente environ 20 lignes de programme par jour, et la création de grands programmes est le fait d'équipes et peut nécessiter plusieurs mois, voire plusieurs années<sup id="cite_ref-ParsonsOja2008675_17-0" class="reference"><a href="#cite_note-ParsonsOja2008675-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>.
</p><p>La programmation est un sujet central en informatique. Les instructions qu'un ordinateur devra exécuter doivent pouvoir être exprimées de manière précise et non ambiguë. Pour ce faire, les langages de programmation combinent la lisibilité de l'anglais avec l'exactitude des mathématiques<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>. Les programmes sont créés par des programmeurs ou des ingénieurs logiciels. La création d'un programme comprend une série d'activités telles que la conception, l'écriture, le test et la documentation. En vue d'obtenir un programme de meilleure qualité, le travail de programmation se fait selon une démarche systématique et planifiée<sup id="cite_ref-dixit_14-1" class="reference"><a href="#cite_note-dixit-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-ParsonsOja2008_12-1" class="reference"><a href="#cite_note-ParsonsOja2008-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>.
</p><p>Un langage de programmation est un vocabulaire et un ensemble de règles d'écriture utilisées pour instruire un ordinateur d'effectuer certaines tâches<sup id="cite_ref-intro_it_13-1" class="reference"><a href="#cite_note-intro_it-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>. La plupart des langages de programmation sont dits <a href="Langage_de_haut_niveau" class="mw-redirect" title="Langage de haut niveau">de haut niveau</a>, c'est-à-dire que leur notation s'inspire des <a href="Langue_naturelle" class="mw-redirect" title="Langue naturelle">langues naturelles</a> (généralement l'anglais)<sup id="cite_ref-woo_1-1" class="reference"><a href="#cite_note-woo-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>.
</p><p>Le processeur est le <a href="Composant_%C3%A9lectronique" title="Composant électronique">composant électronique</a> qui exécute les instructions. Chaque processeur est conçu pour exécuter certaines instructions, dites <a href="Instruction-machine" class="mw-redirect" title="Instruction-machine">instructions machine</a><sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>. La palette d'instructions disponibles sur un processeur forme le <a href="Langage_machine" title="Langage machine">langage machine</a>. Par exemple, le processeur <a href="Intel_80486" title="Intel 80486">Intel 80486</a> a une palette de 342 instructions<sup id="cite_ref-arch_org_20-0" class="reference"><a href="#cite_note-arch_org-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>.
</p><p>Le langage d'assemblage est une représentation textuelle des instructions machine<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>, un <a href="Langage_de_bas_niveau" class="mw-redirect" title="Langage de bas niveau">langage de bas niveau</a>, qui permet d'exprimer les instructions machine sous une forme symbolique plus facile à manipuler, où il y a une correspondance 1-1 entre les instructions machines et les instructions en langage d'assemblage<sup id="cite_ref-arch_org_20-1" class="reference"><a href="#cite_note-arch_org-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>.
</p><p>Les langages de programmation de haut niveau permettent d'exprimer des instructions de manière synthétique, en faisant abstraction du langage machine. Par rapport au langage d'assemblage, ils permettent d'exprimer des structures, permettent d'écrire des programmes plus rapidement, avec moins d'instructions. Les programmes écrits dans des langages de haut niveau sont plus simples à modifier et portables, et peuvent fonctionner avec différents processeurs<sup id="cite_ref-arch_org_20-2" class="reference"><a href="#cite_note-arch_org-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>. Cependant un programme exprimé en langage de haut niveau, puis compilé est moins efficace et comporte plus d'instruction que s'il avait été exprimé en langage d'assemblage<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup>.
</p><p>Entre 1950 et 2000, plus de 50 langages de programmation sont apparus. Chacun apportait un lot de nouveaux concepts, de raffinements et d'innovations. Jusque dans les années 1950, l'utilisation des langages de programmation était semblable à l'écriture d'instructions machines. L'innovation des années 1960 a été de permettre une notation proche des <a href="Math%C3%A9matiques" title="Mathématiques">mathématiques</a> pour écrire des instructions de calcul. Les innovations des années 1970 ont permis l'organisation et l'agrégation des informations manipulées par les programmes — voir <a href="Structure_de_donn%C3%A9es" title="Structure de données">structure de données</a> et <a href="Structure_de_contr%C3%B4le" title="Structure de contrôle">structure de contrôle</a>. Puis l'arrivée de la notion d'<a href="Objet_(informatique)" title="Objet (informatique)">objet</a> a influencé l'évolution des langages de programmation postérieurs à 1980<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>23<span class="cite-bracket">]</span></a></sup>.
</p><p>Ci-dessous, le programme <a href="Hello_world" title="Hello world">Hello world</a> exprimé en langage de programmation <a href="Java_(langage)" title="Java (langage)">Java</a> :
</p>
<div class="mw-highlight mw-highlight-lang-java mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">HelloWorld</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kd">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span><span class="w"> </span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">"Hello world!"</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="p">}</span>
</pre></div>
<p>Le même programme, exprimé dans le langage d'assemblage des processeurs <a href="X86" title="X86">x86</a> :
</p>
<div class="mw-highlight mw-highlight-lang-asm mw-content-ltr" dir="ltr"><pre><span></span><span class="nf">main</span><span class="w"> </span><span class="no">proc</span><span class="w"> </span>
<span class="no">jmp</span><span class="w"> </span><span class="no">debut</span>
<span class="nf">mess</span><span class="w"> </span><span class="no">db</span><span class="w"> </span><span class="err">'</span><span class="no">Hello</span><span class="w"> </span><span class="no">world</span><span class="p">!</span><span class="no">$</span><span class="err">'</span>
<span class="nl">debut:</span>
<span class="nf">mov</span><span class="w"> </span><span class="no">dx</span><span class="p">,</span><span class="w"> </span><span class="no">offset</span><span class="w"> </span><span class="no">mess</span>
<span class="nf">mov</span><span class="w"> </span><span class="no">ah</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span>
<span class="nf">int</span><span class="w"> </span><span class="mi">21</span><span class="no">h</span>
<span class="nf">ret</span>
<span class="nf">main</span><span class="w"> </span><span class="no">endp</span><span class="w"> </span>
<span class="no">cseg</span><span class="w"> </span><span class="no">ends</span>
<span class="nf">end</span><span class="w"> </span><span class="no">main</span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Structure">Structure</h3></div>
<p>Un programme est typiquement composé d'un ensemble de <a href="Proc%C3%A9dure_(informatique)" class="mw-redirect" title="Procédure (informatique)">procédures</a> et de <a href="Fonction_(informatique)" class="mw-redirect" title="Fonction (informatique)">fonctions</a>. Une procédure est une suite d'instructions destinées à réaliser une opération ; par exemple, trier une liste. Une fonction est une suite d'instructions destinées à produire un résultat ; par exemple, un calcul.
</p>
<div class="mw-heading mw-heading3"><h3 id="Dysfonctionnements">Dysfonctionnements</h3></div>
<p>Un <a href="Bug_(informatique)" title="Bug (informatique)">bug</a> est un défaut de construction dans un programme. Les instructions que l'appareil informatique exécute ne correspondent pas à ce qui est attendu, ce qui provoque des dysfonctionnements et des pannes. La pratique de la programmation informatique nécessite des outils pour traquer ou éviter les bugs, ou vérifier la correction du programme.
</p>
<div class="mw-heading mw-heading2"><h2 id="Usage">Usage</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Exécution"><span id="Ex.C3.A9cution"></span>Exécution</h3></div>
<p>L'exécution des programmes est basée sur le principe de la <a href="Ordinateur_%C3%A0_programme_enregistr%C3%A9" title="Ordinateur à programme enregistré">machine à programme enregistré</a> de <a href="John_von_Neumann" title="John von Neumann">John von Neumann</a><sup id="cite_ref-24" class="reference"><a href="#cite_note-24"><span class="cite-bracket">[</span>24<span class="cite-bracket">]</span></a></sup> : les instructions de programme sont exécutées par un <a href="Processeur" title="Processeur">processeur</a>. Ce composant électronique exécute chaque instruction de programme par une succession d'opérations charger/décoder/exécuter : l'instruction est tout d'abord copiée depuis la mémoire vers le processeur, puis elle est décomposée bit par bit pour déterminer l'opération à effectuer, qui est finalement exécutée. La plupart des opérations sont arithmétiques (<a href="Addition" title="Addition">addition</a>, <a href="Soustraction" title="Soustraction">soustraction</a>) ou <a href="Fonction_logique" title="Fonction logique">logiques</a>. L'exécution de programmes par le processeur central (anglais <i><span class="lang-en" lang="en">CPU</span></i>) contrôle la totalité des opérations effectuées par l'ordinateur<sup id="cite_ref-assembly_25-0" class="reference"><a href="#cite_note-assembly-25"><span class="cite-bracket">[</span>25<span class="cite-bracket">]</span></a></sup>.
</p><p>L'exécution du cycle charger-décoder-exécuter est rythmée par une horloge branchée au processeur<sup id="cite_ref-inside_26-0" class="reference"><a href="#cite_note-inside-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup>.
</p><p>En 2011, la <a href="Fr%C3%A9quence_d'horloge" title="Fréquence d'horloge">fréquence d'horloge</a> supportée par les processeurs contemporains se compte en mégahertz ou en gigahertz, ce qui correspond à des millions, voire des milliards de cycles par seconde<sup id="cite_ref-org_27-0" class="reference"><a href="#cite_note-org-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>.
</p><p>Les processeurs contemporains peuvent traiter plusieurs instructions simultanément : lorsqu'une instruction est chargée, le processeur charge immédiatement l'instruction suivante, sans attendre que cette instruction soit décodée puis exécutée, et les processeurs peuvent également charger/décoder/exécuter plusieurs instructions en un seul cycle d'horloge<sup id="cite_ref-inside_26-1" class="reference"><a href="#cite_note-inside-26"><span class="cite-bracket">[</span>26<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Processus">Processus</h4></div>
<p>Pour être exécuté, un programme doit être chargé dans la <a href="M%C3%A9moire_(informatique)" title="Mémoire (informatique)">mémoire</a> de la machine. Le chargement d'un programme peut être soit automatique ou programmé lors de l'<a href="Amorce_(informatique)" class="mw-redirect" title="Amorce (informatique)">amorce</a> de l'ordinateur par exemple, soit interactif et être déclenché par un ordre d'exécution explicite de l'utilisateur (une commande explicite, un appui sur une touche, un bouton, une icône…). Suivant la nature de l'action à effectuer, un programme peut être exécuté de manière ponctuelle (impression d'un texte), de manière répétitive (mise à jour de coordonnées GPS) ou de manière (presque) permanente (surveillance de capteurs).
</p><p>Un programme est une suite d'instructions qui spécifie étape par étape, de manière non-ambiguë, des représentations de <a href="Donn%C3%A9e_(informatique)" title="Donnée (informatique)">données</a> et des calculs. Les instructions sont destinées à manipuler les données lors de l'<a href="Ex%C3%A9cution_(informatique)" title="Exécution (informatique)">exécution</a> du programme. Le programme lui-même est défini par un (ou des) <a href="Algorithme" title="Algorithme">algorithme</a>(s) ou par une <a href="Sp%C3%A9cification_(informatique)" class="mw-redirect" title="Spécification (informatique)">spécification</a>. Un programme décrit de manière exacte les différentes étapes d'un algorithme : ce qu'il y a à faire, quand et avec quelles informations<sup id="cite_ref-principles_16-1" class="reference"><a href="#cite_note-principles-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>. Selon l'<a href="Architecture_de_von_Neumann" title="Architecture de von Neumann">architecture de von Neumann</a> créée en 1945, un programme est chargé dans la mémoire de l'ordinateur, ce qui permet de l'exécuter de manière répétée sans intervention humaine<sup id="cite_ref-IT_intro_28-0" class="reference"><a href="#cite_note-IT_intro-28"><span class="cite-bracket">[</span>28<span class="cite-bracket">]</span></a></sup>, et surtout d'utiliser la même machine pour exécuter autant de programmes que l'on veut. La mémoire dédiée aux programmes est aussi la mémoire dédiée aux données, ce qui permet de traiter les programmes comme des données comme les autres (par exemple, écrire de nouveaux programmes de la même manière qu'on écrirait un document textuel), puis de les exécuter.
</p><p>Des programmes peuvent être exécutés non seulement par les ordinateurs, mais par les nombreux appareils qui sont basés sur des composants informatiques – par exemple, certains robots ménagers, téléphones, fax, instruments de mesure, récepteur de télévision, ainsi que les pièces de matériel informatique telles que les <a href="Disque_dur" title="Disque dur">disques durs</a>, les routeurs, les imprimantes, les consoles de jeux vidéo, les <a href="Assistant_personnel" title="Assistant personnel">assistants personnels</a> et les automates bancaires. Contrairement aux ordinateurs, ces appareils ne contiennent souvent pas de système d'exploitation, les programmes sont enregistrés dans l'appareil lors de la fabrication et la vitesse d'exécution des programmes est souvent d'importance mineure<sup id="cite_ref-29" class="reference"><a href="#cite_note-29"><span class="cite-bracket">[</span>29<span class="cite-bracket">]</span></a></sup>.
</p><p>Sans contre-indication, les instructions d'un programme sont exécutées une après l'autre, de manière linéaire. Les langages de programmation permettent d'exprimer des alternatives : une suite d'instructions est exécutée uniquement si une condition donnée est remplie, dans le cas contraire une autre suite est exécutée. Les langages de programmation permettent également de faire répéter l'exécution d'une suite d'instructions jusqu'à ce qu'une condition donnée soit remplie<sup id="cite_ref-ParsonsOja2008_12-2" class="reference"><a href="#cite_note-ParsonsOja2008-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Compilation_et_interprétation"><span id="Compilation_et_interpr.C3.A9tation"></span>Compilation et interprétation</h3></div>
<p>L'exécution se déroule de manière différente suivant si le langage de programmation s'utilise avec un <a href="Compilateur" title="Compilateur">compilateur</a> ou un <a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interpréteur</a><sup id="cite_ref-org_27-1" class="reference"><a href="#cite_note-org-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>.
</p>
<ul><li>Un compilateur lit le programme source en entier et le transforme en instructions machines. La transformation peut se faire en plusieurs étapes et nécessiter plusieurs lectures du programme. Une fois traduit, le programme est ensuite enregistré en vue d'être plus tard copié en mémoire et exécuté par le processeur tel quel<sup id="cite_ref-org_27-2" class="reference"><a href="#cite_note-org-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup> ;</li>
<li>Un interpréteur opère ligne par ligne : lit une ligne de programme source, puis exécute immédiatement les instructions machines correspondantes. L'avantage d'un interpréteur est que les erreurs peuvent être immédiatement corrigées. Le désavantage est que l'exécution du programme est 10 à 100 fois moins rapide que si le programme avait été préalablement traduit et exécuté tel quel<sup id="cite_ref-org_27-3" class="reference"><a href="#cite_note-org-27"><span class="cite-bracket">[</span>27<span class="cite-bracket">]</span></a></sup>.</li></ul>
<table class="wikitable">
<tbody><tr>
<th>Critère
</th>
<th>Compilation
</th>
<th>Interprétation
</th></tr>
<tr>
<th scope="row">Efficacité
</th>
<td bgcolor="#CEF2AA">Code natif de la machine
<p>Peut être optimisé
</p>
</td>
<td bgcolor="#F4BBAA">10 à 100 fois plus lent
<p>Appel de sous-programmes
</p><p>Pas de gain sur les boucles
</p>
</td></tr>
<tr>
<th scope="row">Mise au point
</th>
<td bgcolor="#F4BBAA">Lien erreur ↔ source complexe
</td>
<td bgcolor="#CEF2AA">Lien instruction ↔ exécution trivial
<p>Trace et observations simples
</p>
</td></tr>
<tr>
<th scope="row">Cycle de développement
</th>
<td bgcolor="#F4BBAA">Cycle complet à chaque modification :
<p>compilation, édition de liens, exécution
</p>
</td>
<td bgcolor="#CEF2AA">Cycle très court :
<p>modifier et ré-exécuter
</p>
</td></tr></tbody></table>
<div class="mw-heading mw-heading3"><h3 id="Environnement_d'exécution"><span id="Environnement_d.27ex.C3.A9cution"></span>Environnement d'exécution</h3></div>
<p>Les ordinateurs modernes démarrent à leur lancement un programme « maître » dit <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a><sup id="cite_ref-ParsonsOja2008_12-3" class="reference"><a href="#cite_note-ParsonsOja2008-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup><sup class="reference cite_virgule">,</sup><sup id="cite_ref-dixit_14-2" class="reference"><a href="#cite_note-dixit-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>. Il permet d'exécuter des sous-programmes qui peuvent alors profiter des fonctionnalités offertes par le système et qui dans certains cas doivent s'adapter à cet environnement. Les systèmes d'exploitation contemporains permettent d'exécuter simultanément plusieurs programmes dans des <a href="Processus_(informatique)" title="Processus (informatique)">processus</a>, même avec un seul processeur : un programme planificateur (en <a href="Anglais" title="Anglais">anglais</a> : <span class="lang-en" lang="en"><i>scheduler</i></span>) du système d'exploitation interrompt régulièrement le programme en cours d'exécution pour donner la main à un autre<sup id="cite_ref-30" class="reference"><a href="#cite_note-30"><span class="cite-bracket">[</span>30<span class="cite-bracket">]</span></a></sup>. La vitesse de rotation donne l'illusion que les programmes sont exécutés en même temps<sup id="cite_ref-31" class="reference"><a href="#cite_note-31"><span class="cite-bracket">[</span>31<span class="cite-bracket">]</span></a></sup>.
</p><p>Un <a href="Sous-programme" title="Sous-programme">sous-programme</a> du système d'exploitation peut lui-même être un environnement permettant d'exécuter des programmes (avec une <a href="Interface_(informatique)" title="Interface (informatique)">interface</a> différente) ; par exemple, une <a href="Machine_virtuelle" title="Machine virtuelle">machine virtuelle</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Aspects_juridiques">Aspects juridiques</h2></div>
<p>En <a href="Droit" title="Droit">droit</a>, un programme est une œuvre écrite, protégée par le <a href="Droit_d'auteur" title="Droit d'auteur">droit d'auteur</a>. Celui-ci s'applique au programme du moment qu'il est enregistré de manière permanente, même s'il n'existe pas d'édition sur papier. Le droit d'auteur protège autant le programme source que le programme binaire<sup id="cite_ref-32" class="reference"><a href="#cite_note-32"><span class="cite-bracket">[</span>32<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style="column-width:36em; column-count:2;"><ol class="references">
<li id="cite_note-woo-1"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Jisuk Woo, <i><span class="lang-en" lang="en">Copyright Law and Computer Programs: The Role of Communication in Legal Structure</span></i>, <span class="lang-en" lang="en">Routledge</span> - 2000 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780815334712</span>)</small>.</span>
</li>
<li id="cite_note-forensics-2"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Michael Sheetz, <i><span class="lang-en" lang="en">Computer Forensics: An Essential Guide for Accountants, Lawyers, and Managers</span></i>, <span class="lang-en" lang="en">John Wiley and Sons</span> - 2007 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780471789321</span>)</small>.</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Ian Sommerville, <i><span class="lang-en" lang="en">Software Engineering</span></i>, <span class="lang-en" lang="en">Pearson Education</span> - 2007 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780321313799</span>)</small>.</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Leibniz2003"><span class="ouvrage" id="G.F._Leibniz2003">G.F. Leibniz (<abbr class="abbr" title="traduction">trad.</abbr> Paul Boucher), <cite class="italique">G. W. Leibniz, des conditions</cite>, Vrin, <time>2003</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">978-2-7116-1578-0</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=G.+W.+Leibniz%2C+des+conditions&rft.pub=Vrin&rft.aulast=Leibniz&rft.aufirst=G.F.&rft.date=2003&rft.isbn=978-2-7116-1578-0&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AProgramme+informatique"></span></span></span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text">« […] a certainement été le premier programmeur du monde ». <span class="ouvrage" id="RussellNorvig2010"><span class="ouvrage" id="Stuart_RussellPeter_Norvig2010"><a href="Stuart_Russell" title="Stuart Russell">Stuart Russell</a> et <a href="Peter_Norvig" title="Peter Norvig">Peter Norvig</a>, <cite class="italique">Intelligence artificielle</cite>, Pearson Education France, <time>2010</time> <small style="line-height:1em;">(<a rel="nofollow" class="external text" href="https://books.google.com/books?id=DWTlFWSGxJMC&dq=premier%20programmeur&pg=PA15">lire en ligne</a>)</small>, <abbr class="abbr" title="page">p.</abbr> 15<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Intelligence+artificielle&rft.pub=Pearson+Education+France&rft.aulast=Russell&rft.aufirst=Stuart&rft.au=Peter+Norvig&rft.date=2010&rft.pages=15&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AProgramme+informatique"></span></span></span>.</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a> </span><span class="reference-text"><span class="ouvrage"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="http://www.nature.com/scientificamerican/journal/v280/n5/pdf/scientificamerican0599-76.pdf"><cite style="font-style:normal;" lang="en">Ada and the first computer</cite></a> »</span></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a> </span><span class="reference-text"><span class="ouvrage"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> « <a rel="nofollow" class="external text" href="http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4640697"><cite style="font-style:normal;" lang="en">Charles Babbage's Analytical Engine, 1838</cite></a> »</span>.</span>
</li>
<li id="cite_note-on_computable_numbers-8"><span class="mw-cite-backlink"><a href="#cite_ref-on_computable_numbers_8-0">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Turing1937"><span class="ouvrage" id="Alan_Turing1937"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Alan Turing, <cite class="italique" lang="en">On Computable Numbers, with an Application to the Entscheidungsproblem : Proceedings of the London Mathematical Society</cite>, London Mathematical Society, <time>1937</time> <small style="line-height:1em;">(<a href="Digital_Object_Identifier" title="Digital Object Identifier">DOI</a> <span class=" noarchive nowrap"><a rel="nofollow" class="external text" href="https://dx.doi.org/10.1112/PLMS/S2-42.1.230">10.1112/PLMS/S2-42.1.230</a></span>, <a rel="nofollow" class="external text" href="https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf">lire en ligne</a>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=On+Computable+Numbers%2C+with+an+Application+to+the+Entscheidungsproblem&rft.pub=London+Mathematical+Society&rft.stitle=Proceedings+of+the+London+Mathematical+Society&rft.aulast=Turing&rft.aufirst=Alan&rft.date=1937&rft_id=info%3Adoi%2F10.1112%2FPLMS%2FS2-42.1.230&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AProgramme+informatique"></span></span></span> et <span class="ouvrage" id="1938">« <cite style="font-style:normal">[<i>idem</i>] : A Correction</cite> », <i>Proc. London Math. Soc.</i>, <abbr class="abbr" title="deuxième">2<sup>e</sup></abbr> série, <abbr class="abbr" title="volume">vol.</abbr> 43, <time>1938</time>, <abbr class="abbr" title="pages">p.</abbr> <span class="nowrap">544-546</span> <small style="line-height:1em;">(<a href="Digital_Object_Identifier" title="Digital Object Identifier">DOI</a> <span class=" noarchive nowrap"><a rel="nofollow" class="external text" href="https://dx.doi.org/10.1112/plms/s2-43.6.544">10.1112/plms/s2-43.6.544</a></span>, <a rel="nofollow" class="external text" href="http://www.thocp.net/biographies/papers/turing_oncomputablenumbers_1936.pdf">lire en ligne</a>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=%5B%27%27idem%27%27%5D&rft.jtitle=Proc.+London+Math.+Soc.&rft.stitle=A+Correction&rft.date=1938&rft.volume=43&rft.pages=544-546&rft_id=info%3Adoi%2F10.1112%2Fplms%2Fs2-43.6.544&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AProgramme+informatique"></span></span>.</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a> </span><span class="reference-text">Pierre Mounier-Kuhn, <a rel="nofollow" class="external text" href="http://pups.paris-sorbonne.fr/catalogue/centre-roland-mousnier/linformatique-en-france-de-la-seconde-guerre-mondiale-au-plan-calcul/"><i>L'informatique en France, de la seconde guerre mondiale au Plan Calcul. L'émergence d'une science</i></a>, Paris, PUPS, 2010, ch. 3.</span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><a href="#cite_ref-10">↑</a> </span><span class="reference-text">Christian Piguet - Heinz Hügli, <i>Du zéro à l'ordinateur : Une brève histoire du calcul</i>, PPUR presses polytechniques - 2004 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">978-2-88074-469-4</span>)</small>.</span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <span class="lang-en" lang="en">National Research Council</span> (États-Unis). <span class="lang-en" lang="en">Committee on the Fundamentals of Computer Science: Challenges and Opportunities</span>, <i><span class="lang-en" lang="en">Computer Science: Reflections on the Field - Reflections from the Field</span></i>, <span class="lang-en" lang="en">National Academies Press</span> - 2004 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">978-0-309-09301-9</span>)</small>.</span>
</li>
<li id="cite_note-ParsonsOja2008-12"><span class="reference-text"><a href="#ParsonsOja2008">Parsons et Oja 2008</a>. </span>
</li>
<li id="cite_note-intro_it-13"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <span class="lang-en" lang="en">I. T. L. Education Solutions Limited</span>, Itl, <i><span class="lang-en" lang="en">Introduction to Information Technology</span></i>, <span class="lang-en" lang="en">Pearson Education India</span> - 2009 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788177581188</span>)</small>.</span>
</li>
<li id="cite_note-dixit-14"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> J. B. Dixit, <i><span class="lang-en" lang="en">Computer Programming</span></i>, <span class="lang-en" lang="en">Firewall Media</span> - 2007 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788131800683</span>)</small>.</span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Carl Reynolds, Paul T. Tymann, <i><span class="lang-en" lang="en">Schaum's Outline of Principles of Computer Science</span></i>, McGraw-Hill Professional - 2008 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780071460514</span>)</small>.</span>
</li>
<li id="cite_note-principles-16"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> A. Michael Noll, <i><span class="lang-en" lang="en">Principles of Modern Communications Technology</span></i>, <span class="lang-en" lang="en">Artech House</span> - 2001 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9781580532846</span>)</small>.</span>
</li>
<li id="cite_note-ParsonsOja2008675-17"><span class="mw-cite-backlink"><a href="#cite_ref-ParsonsOja2008675_17-0">↑</a> </span><span class="reference-text"><a href="#ParsonsOja2008">Parsons et Oja 2008</a>, <abbr class="abbr" title="page(s)">p.</abbr> 675. </span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Alistair Edwards, <i><span class="lang-en" lang="en">Get Set for Computer Science</span></i>, <span class="lang-en" lang="en"><a href="Edinburgh_University_Press" title="Edinburgh University Press">Edinburgh University Press</a></span> - 2006 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780748621675</span>)</small>.</span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><a href="#cite_ref-19">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> D. A. Godse A. P. Godse, <i><span class="lang-en" lang="en">Computer Organization</span></i>, <span class="lang-en" lang="en">Technical Publications</span> - 2008 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788184313789</span>)</small>.</span>
</li>
<li id="cite_note-arch_org-20"><span class="reference-text"><span class="ouvrage" id="GodseGodse2007"><span class="ouvrage" id="D.A._GodseA.P._Godse2007"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> D.A. <span class="nom_auteur">Godse</span> et A.P. <span class="nom_auteur">Godse</span>, <cite class="italique" lang="en">Computer Architecture & Organisation</cite>, Technical Publications, <time>2007</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">8184317719</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Computer+Architecture+%26+Organisation&rft.pub=Technical+Publications&rft.aulast=Godse&rft.aufirst=D.A.&rft.au=Godse%2C+A.P.&rft.date=2007&rft.isbn=8184317719&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AProgramme+informatique"></span></span></span></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><a href="#cite_ref-21">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Rajat Moona, <i><span class="lang-en" lang="en">Assembly Language Programming In Gnu/Linux For Ia32 Architectures</span></i>, <span class="lang-en" lang="en">PHI Learning Pvt. Ltd.</span> - 2007 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788120331563</span>)</small>.</span>
</li>
<li id="cite_note-22"><span class="mw-cite-backlink"><a href="#cite_ref-22">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> T. Radhakrishnan, <i><span class="lang-en" lang="en">Essentials of Assembly Language Programming for the IBM PC</span></i>, <span class="lang-en" lang="en">PHI Learning Pvt. Ltd.</span> - 2004 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788120314252</span>)</small>.</span>
</li>
<li id="cite_note-23"><span class="mw-cite-backlink"><a href="#cite_ref-23">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> John C. Mitchell, <i><span class="lang-en" lang="en">Concepts in Programming Languages</span></i>, <span class="lang-en" lang="en">Cambridge University Press</span> - 2003 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">978-0-521-78098-8</span>)</small>.</span>
</li>
<li id="cite_note-24"><span class="mw-cite-backlink"><a href="#cite_ref-24">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Nithyashri, <i><span class="lang-en" lang="en">System Software</span></i>, <span class="lang-en" lang="en">Tata McGraw-Hill Education</span> - 2010 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780070671928</span>)</small>.</span>
</li>
<li id="cite_note-assembly-25"><span class="mw-cite-backlink"><a href="#cite_ref-assembly_25-0">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Sivarama P. Dandamudi, <i><span class="lang-en" lang="en">Guide to Assembly Language Programming in Linux</span></i>, <span class="lang-en" lang="en">Springer</span> - 2005 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780387258973</span>)</small>.</span>
</li>
<li id="cite_note-inside-26"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Jon Stokes, <i><span class="lang-en" lang="en">Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture</span></i>, <span class="lang-en" lang="en">No Starch Press</span> - 2007 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9781593271046</span>)</small>.</span>
</li>
<li id="cite_note-org-27"><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> A. P. Godse, <i><span class="lang-en" lang="en">Computer Organisation</span></i>, <span class="lang-en" lang="en">Technical Publications</span> - 2009 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788184310009</span>)</small>.</span>
</li>
<li id="cite_note-IT_intro-28"><span class="mw-cite-backlink"><a href="#cite_ref-IT_intro_28-0">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Rajaraman2004"><span class="ouvrage" id="V._Rajaraman2004"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> V. <span class="nom_auteur">Rajaraman</span>, <cite class="italique" lang="en">Introduction to Information Technology</cite>, PHI Learning Pvt. Ltd., <time>2004</time> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9788120324022</span>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Introduction+to+Information+Technology&rft.pub=PHI+Learning+Pvt.+Ltd.&rft.aulast=Rajaraman&rft.aufirst=V.&rft.date=2004&rft.isbn=9788120324022&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AProgramme+informatique"></span></span></span>.</span>
</li>
<li id="cite_note-29"><span class="mw-cite-backlink"><a href="#cite_ref-29">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Raj Kamal, <i><span class="lang-en" lang="en">Embedded Systems: Architecture, Programming and Design</span></i>, <span class="lang-en" lang="en">Tata McGraw-Hill Education</span> - 2003 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780070494701</span>)</small>.</span>
</li>
<li id="cite_note-30"><span class="mw-cite-backlink"><a href="#cite_ref-30">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Daniel Pierre Bovet et Marco Cesati, <i><span class="lang-en" lang="en">Understanding the Linux Kernel</span></i>, <span class="lang-en" lang="en">O'Reilly Media Inc.</span> - 2002 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780596002138</span>)</small>.</span>
</li>
<li id="cite_note-31"><span class="mw-cite-backlink"><a href="#cite_ref-31">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Nell B. Dale et John Lewis, <i><span class="lang-en" lang="en">Computer Science Illuminated</span></i>, <span class="lang-en" lang="en">Jones & Bartlett Learning</span> - 2007 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780763741495</span>)</small>.</span>
</li>
<li id="cite_note-32"><span class="mw-cite-backlink"><a href="#cite_ref-32">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> Tamara S. Eisenschitz, <i><span class="lang-en" lang="en">Patents, Trade Marks and Designs in Information Work</span></i>, <span class="lang-en" lang="en">Routledge</span> - 1987 <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">9780709909583</span>)</small>.</span>
</li>
</ol>
</div>
<div class="mw-heading mw-heading2"><h2 id="Annexes">Annexes</h2></div>
<style data-mw-deduplicate="TemplateStyles:r194021218">
/* start https://fr.wikipedia.org/ */
.mw-parser-output .autres-projets>.titre{text-align:center;margin:0.2em 0}.mw-parser-output .autres-projets>ul{margin:0;padding:0}.mw-parser-output .autres-projets>ul>li{list-style:none;margin:0.2em 0;text-indent:0;padding-left:24px;min-height:20px;text-align:left;display:block}.mw-parser-output .autres-projets>ul>li>a{font-style:italic}@media(max-width:720px){.mw-parser-output .autres-projets{float:none}}
/* end https://fr.wikipedia.org/ */
</style>
<div class="mw-heading mw-heading3"><h3 id="Bibliographie">Bibliographie</h3></div>
<ul><li><span class="ouvrage" id="ParsonsOja2008"><span class="ouvrage" id="June_Jamrich_ParsonsDan_Oja2008"><small>[Parsons Oja 2008]</small> <abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> June Jamrich <span class="nom_auteur">Parsons</span> et Dan Oja, <cite class="italique" lang="en">New Perspectives on Computer Concepts</cite>, Cengage Learning, <time>2008</time>, 800 <abbr class="abbr" title="pages">p.</abbr> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a> <span class="nowrap">978-1-4239-2518-7</span> et <span class="nowrap">1-4239-2518-1</span>, <a rel="nofollow" class="external text" href="https://books.google.com/books?id=SIc23L3j_sIC&printsec=frontcover">lire en ligne</a>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=New+Perspectives+on+Computer+Concepts&rft.pub=Cengage+Learning&rft.aulast=Parsons&rft.aufirst=June+Jamrich&rft.au=Dan+Oja&rft.date=2008&rft.tpages=800&rft.isbn=978-1-4239-2518-7&rfr_id=info%3Asid%2Ffr.wikipedia.org%3AProgramme+informatique"></span></span></span>.</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<div style="column-count:2;column-gap:1em;" class="colonnes">
<ul><li><a href="Logiciel" title="Logiciel">Logiciel</a></li>
<li><a href="%C3%89conomie_d'%C3%A9nergie_d'un_programme_informatique" title="Économie d'énergie d'un programme informatique">Économie d'énergie d'un programme informatique</a></li>
<li><a href="Agent_logiciel" title="Agent logiciel">Agent logiciel</a></li>
<li><a href="Programmation_informatique" title="Programmation informatique">Programmation informatique</a></li>
<li><a href="Langage_de_programmation" title="Langage de programmation">Langage de programmation</a></li>
<li><a href="Machine_de_Turing" title="Machine de Turing">Machine de Turing</a></li>
<li><a href="Style_de_programmation" title="Style de programmation">Style de programmation</a></li>
<li><a href="Localisation_automatique_de_bugs" title="Localisation automatique de bugs">Localisation automatique de bugs</a></li></ul>
</div>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<p class="mw-empty-elt">
</p>
<ul><li class="mw-empty-elt"></li>
<li class="mw-empty-elt"></li>
<li><div class="liste-horizontale"><span class="wd_identifiers">Notices dans des dictionnaires ou encyclopédies généralistes</span> : <ul><li><a rel="nofollow" class="external text" href="https://www.britannica.com/technology/computer-program"><i>Britannica</i></a></li> <li><a rel="nofollow" class="external text" href="http://www.sapere.it/enciclopedia/programma%2B%28informatica%29.html"><i>Enciclopedia De Agostini</i></a></li> <li><a rel="nofollow" class="external text" href="https://www.ne.se/uppslagsverk/encyklopedi/lång/program-%282%29"><i>Nationalencyklopedin</i></a></li> <li><a rel="nofollow" class="external text" href="https://snl.no/dataprogram"><i>Store norske leksikon</i></a></li> <li><a rel="nofollow" class="external text" href="http://www.treccani.it/enciclopedia/programma"><i>Treccani</i></a></li> </ul></div></li>
<li><div class="liste-horizontale"><span class="wd_identifiers"><a href="Autorit%C3%A9_(sciences_de_l'information)" title="Autorité (sciences de l'information)">Notices d'autorité</a></span> : <ul><li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="http://id.loc.gov/authorities/sh85029524">LCCN</a></span></li> <li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="http://d-nb.info/gnd/4047394-6">GND</a></span></li> <li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="https://datos.bne.es/resource/XX526558">Espagne</a></span></li> <li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="https://www.nli.org.il/en/authorities/987007545774305171">Israël</a></span></li> <li><span class="nowrap uid noarchive"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=ph124516">Tchéquie</a></span></li> </ul></div></li></ul>
<div class="navbox-container" style="clear:both;">
</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> <li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-07-09" href="https://fr.wikipedia.org/wiki/?title=Programme_informatique&oldid=227133382">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>